package com.chaofan.sell.service;

import com.chaofan.sell.dto.OrderDTO;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;

/**
 * 订单
 *
 * @author: Fairy
 * @date: 2021/9/6
 */
public interface OrderService {

    /**
     * 创建订单
     *
     * @param orderDTO 待创建的订单
     * @return 创建好的订单
     */
    OrderDTO create(OrderDTO orderDTO);

    /**
     * 查询单个订单
     *
     * @param orderId 订单id
     * @return 订单详情
     */
    OrderDTO findOne(String orderId);

    /**
     * 查询订单列表
     *
     * @param buyerOpenid 买家openid
     * @param pageable    查询页
     * @return 订单页
     */
    Page<OrderDTO> findList(String buyerOpenid, Pageable pageable);

    /**
     * 取消订单
     *
     * @param orderDTO 待取消的订单
     * @return 取消后的订单
     */
    OrderDTO cancel(OrderDTO orderDTO);

    /**
     * 完结订单
     *
     * @param orderDTO 待完结订单
     * @return 完结后的订单
     */
    OrderDTO finish(OrderDTO orderDTO);

    /**
     * 支付订单
     *
     * @param orderDTO 待支付的订单
     * @return 支付后的订单
     */
    OrderDTO paid(OrderDTO orderDTO);

    /**
     * 查询订单列表
     *
     * @param pageable 查询页
     * @return 订单页
     */
    Page<OrderDTO> findList(Pageable pageable);
}
